import akshare as ak
import pandas as pd
import numpy as np

# 设置基金代码
# fund_code = "006229"  # 以“招商中证白酒指数(LOF)”为例
# fund_code = "020397"  # 以“招商中证白酒指数(LOF)”为例
fund_code = "011412"  # 易方达远见成长混合C
fund_code = "018956"  # 中航机遇领航混合发起

try:
    # 使用 akshare 获取基金的净值历史数据
    # 该函数从天天基金网获取数据
    print(f"正在获取基金代码 {fund_code} 的历史净值数据...")
    fund_history_df = ak.fund_open_fund_info_em(symbol=fund_code, indicator="单位净值走势")
    print(fund_history_df)

    # 对数据进行一些基础处理（可选）
    # 将“净值日期”列转换为日期格式
    fund_history_df['净值日期'] = pd.to_datetime(fund_history_df['净值日期'])
    # 将“单位净值”、“累计净值”和“日增长率”转换为数值格式
    # value_columns = ['单位净值', '累计净值']
    # for col in value_columns:
    #     fund_history_df[col] = pd.to_numeric(fund_history_df[col], errors='coerce')  # errors='coerce' 会将无法转换的值变为NaN
    #
    # fund_history_df['日增长率'] = pd.to_numeric(fund_history_df['日增长率'], errors='coerce')
    #
    # # 按照日期升序排序
    # fund_history_df = fund_history_df.sort_values(by='净值日期', ascending=True).reset_index(drop=True)
    #
    # # 打印数据的前5行和后5行
    # print("\n数据获取成功！")
    # print("历史数据预览 (前5条):")
    # print(fund_history_df.head())
    #
    # print("\n历史数据预览 (后5条):")
    # print(fund_history_df.tail())
    #
    # # 将数据保存到 CSV 文件 (可选)
    # file_name = f"fund_history_{fund_code}.csv"
    # fund_history_df.to_csv(file_name, index=False, encoding='utf-8-sig')
    # print(f"\n数据已成功保存到文件: {file_name}")

except Exception as e:
    print(f"获取数据时发生错误: {e}")
